import axios from 'axios'
import { message } from "ant-design-vue";
import router from '@/router'
/**
 * 这是封装的axios请求工具类
 */
//创建axios的一个实例 
let instance = axios.create({
    baseURL: '',
    timeout: 6000,
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
    }
})


//请求拦截器
instance.interceptors.request.use(function (config) {
    let exPath = ['/api/login']
    if (!exPath.includes(config.url)) {
        let token = window.sessionStorage.getItem("access_token")
        config.headers.token = token ? token : ''
    }
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

//响应拦截器
instance.interceptors.response.use(function (response) {
    response.data.code = response.data.code ? response.data.code : null
    if (response.data.code === 1100) {
        message.error("登录信息过期，请重新登录");
        router.push("/home")
    }

    return response.data;
}, function (error) {
    // 对响应错误做点什么
    message.error(error.message);
    console.log('拦截器报错');
    return Promise.reject(error);
});

/**
 * @param {String} method  请求的方法：get、post、delete、put
 * @param {String} url     请求的url:
 * @param {Object} data    请求的参数
 * @returns {Promise}      返回一个promise对象=axios请求数据的返回值
 */
export default function (method, url, data = null, config = null) {
    method = method.toLowerCase();
    if (method == 'post') {
        return instance.post(url, data, config)
    } else if (method == 'get') {
        return instance.get(url, { params: data })
    } else if (method == 'delete') {
        return instance.delete(url, { params: data })
    } else if (method == 'put') {
        return instance.put(url, data)
    } else {
        console.error('未知的method' + method)
        return false
    }
}